1. Field of the Invention
The present invention relates to network enabled telephony devices, for example Voice over IP Telephones, configured for executing applications related to attributes of a telephony user.
2. Description of the Related Art
Telephony devices have advanced to provide enhanced features for business consumers. For example, a business premises deploying a Private Branch Exchange (PBX) for intraoffice or interoffice communications utilizes telephony devices capable of receiving messages from the PBX, including a time of day string or a calling party identity string. However, proprietary PBX systems limit the availability of features that can be added to the telephony device. In addition, proprietary PBX systems typically provide voice-only services, such that text, data, or images cannot be transferred to the telephony device.
Voice over IP (VoIP) technology has evolved to provide network enabled telephony devices, for example Voice over IP telephony devices, configured for performing multiple operations that emulate a telephony device. VoIP telephony devices often include large display screens or other display capabilities, enabling new service features to be provided for a user. For example, the VoIP telephones, such as the commercially-available Cisco Telecaster 7960 IP Telephone from Cisco Systems, San Jose, Calif., includes user input and display operations. These user input and display operations enable a user to access multiple windows displaying respective applications based on soft key or hard key inputs, such as accessing a central telephone directory for retrieval of an employee's telephone number using a search query or selection from the displayed list. A user of the VoIP telephone can access one window configured displaying call status (e.g., duration of call, called party identity), or access another window configured for displaying the central telephone directory.
The executable software resident in the VoIP telephone, however, tends to be device-specific. Hence, the executable software needs to be rewritten for newer VoIP telephones having different hardware configurations (e.g., different sets of hard buttons, color display vs. grayscale display, different-sized display, etc.), although compatibility issues may be reduced using hardware abstraction layers and input abstraction layers between the telephone display controller, the display portion, and the input portion. Moreover, the device-specific nature of the VoIP telephone software limits the manner in which different application services can be added to the VoIP telephone device for the device user: the VoIP telephone software needs to be modified to add the different application services. In addition, the VoIP telephone typically is configured for communication with a single call server, resulting in additional resource requirements imposed on the call server as services are added.
Efforts are underway to improve the graphical user interface (GUI) of the telephony devices in order to enable additional services to be provided to a user of the telephony device. For example, browser-based telephony device technology is being implemented in wireless telephones using Wireless Application Protocol (WAP). In particular, WAP uses Extensible Markup Language (XML) technology to communicate interface changes to wireless devices such as digital wireless telephones and pagers, enabling applications and services to be provided to the digital wireless telephones. The use of XML tags enables the data to be displayed on the digital wireless telephone display in a prescribed manner.
The WAP-based approach to displaying data on the digital wireless telephone still suffers from the disadvantage that the input and display controllers of the digital wireless telephone interact with a single WAP portal (i.e., server), limiting the flexibility of the telephony device operations. In particular, a user is unable to send or receive a wireless telephone call on his or her web-enabled digital wireless telephone while using the digital wireless telephone to access the Internet. In addition, the VoIP telephone typically is configured for communication with a single call server, resulting in additional resource requirements imposed on the call server as services are added.
Hence, existing VoIP technology is limited in the available services due to the control of services by a remote server. Consequently, existing VoIP systems have had limited flexibility in providing advanced services to a VoIP telephony device.
“Model view controller” is an architecture used for dividing a graphic user interface (GUI) based application into three logical parts: the model object, the view object, and the controller object. The model view controller paradigm was originally developed to map traditional input, processing, and output operation into a GUI based paradigm. The model object includes logic for managing information, notifying observers when information changes, and responding to information queries. The model object is used to serve as a computational abstraction of a executable processor system, and defines the state and logic of the process.
The view object is configured for mapping (i.e., rendering) data such as text and/or graphics onto a device. Changes to a model object causes the view object to automatically redraw the affected part of the image to reflect the changes. In addition, multiple view objects for the same model may be utilized to render the contents of the model object according to a different corresponding display (e.g., data table, monthly chart view, daily chart view, linear scale, logarithmic scale, etc).
The controller object provides the means by which the user interacts with the application; the controller object accepts input from the user, and instructs the model object and the view object to perform actions based upon the user input, effectively mapping user inputs to application response. Examples of a controller object include controllers for buttons, microphones, and sensors.
Use of the model view controller architecture typically has been limited to instances where GUI interfaces may be utilized for different hardware configurations (e.g., different displays, different input devices) by substituting the corresponding view object or controller object, without the necessity for changing the model object.